#pragma once
#include "Thread.h"
#include "ConnectionPool.h"
#include <event2/listener.h>

class TcpServer
{
public:
    TcpServer();
    ~TcpServer();
    // 开始监听
    int listen(char *ip, short port);

protected:
    // 监听者的回调函数 (有客户端连接时触发的回调函数)
    static void listener_cb(struct evconnlistener *listener, evutil_socket_t fd,
                            struct sockaddr *addr, int socklen, void *arg);

private:
    Thread *m_threadPool;              // 线程池
    int m_poolSize;                    // 线程池的大小
    int currentThread;                 // 当前线程
    struct event_base *m_base;         // 事件集合
    struct evconnlistener *m_listener; // 监听者
};
